import request from "@/utils/request";

const EXAM_BASE_URL = "/api/exam";

class ExamAPI {
  /**
   * 获取活动列表
   *
   * @param queryParams 查询参数（可选）
   * @returns 活动树形表格数据
   */
  static getList(queryParams?: ExamQuery) {
    return request<any, ExamVO[]>({
      url: `${EXAM_BASE_URL}`,
      method: "get",
      params: queryParams,
    });
  }

  /** 获取活动下拉列表 */
  static getOptions() {
    return request<any, OptionType[]>({
      url: `${EXAM_BASE_URL}/create`,
      method: "get",
    });
  }

  /**
   * 获取活动表单数据
   *
   * @param id 活动ID
   * @returns 活动表单数据
   */
  static getFormData(id: number) {
    return request<any, ExamForm>({
      url: `${EXAM_BASE_URL}/${id}`,
      method: "get",
    });
  }

  /**
   * 新增活动
   *
   * @param data 活动表单数据
   * @returns 请求结果
   */
  static add(data: ExamForm) {
    return request({
      url: `${EXAM_BASE_URL}`,
      method: "post",
      data: data,
    });
  }

  /**
   * 修改活动
   *
   * @param id 活动ID
   * @param data 活动表单数据
   * @returns 请求结果
   */
  static update(id: number, data: ExamForm) {
    return request({
      url: `${EXAM_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  }

  /**
   * 删除活动
   *
   * @param ids 活动ID，多个以英文逗号(,)分隔
   * @returns 请求结果
   */
  static deleteByIds(ids: string) {
    return request({
      url: `${EXAM_BASE_URL}/${ids}`,
      method: "delete",
    });
  }
  static setConfig(data: object) {
    return request({
      url: `${EXAM_BASE_URL}/setConfig`,
      method: "post",
      data: data,
    });
  }
  static getConfig(id: number) {
    return request({
      url: `${EXAM_BASE_URL}/getConfig/${id}`,
      method: "get",
    });
  }

  /**
   * 根据活动id获取活动日期列表
   * @param id
   */
  static getExamDate(id: nunber) {
    return request({
      url: `${EXAM_BASE_URL}/getDate/${id}`,
      method: "get",
    });
  }

  /**
   * 根据活动id生成活动分享二维码
   * @param id
   */
  static createQRCode(id: number) {
    return request({
      url: `${EXAM_BASE_URL}/createQRCode/${id}`,
      method: "get",
    });
  }
  static import(file: File, answerId: number) {
    const formData = new FormData();
    formData.append("file", file);
    formData.append("answer", answerId);
    return request({
      url: `${EXAM_BASE_URL}/upload`,
      method: "post",
      data: formData,
      headers: {
        "Content-Type": "multipart/form-data",
      },
    });
  }
  static getVideo(answerId: number) {
    return request({
      url: `${EXAM_BASE_URL}/getVideo/${answerId}`,
      method: "get",
      headers: {
        "Content-Type": "multipart/form-data",
      },
    });
  }
}

export default ExamAPI;

/** 活动查询参数 */
export interface ExamQuery {
  /** 活动id */
  active?: number;
  /** 搜索关键字 */
  keywords?: string;
  /** 登录账号 */
  account?: string;
  /** 状态 */
  status?: number;
}

/** 活动table字段 */
export interface ExamVO {
  /** 考试记录(新增不填) */
  id?: number;
  /** 考生姓名 */
  name?: string;
  /** 考试类型 */
  type: number;
  /** 报名时间 */
  createTime: string;
  /**视频地址**/
  video_url: string;
  /**联系人**/
  contact_person: string;
  /**视频服务器地址**/
  video_local_url: string;
  /** 状态(0:未上传；1：在服务器；2：上传到0SS*/
  video_status: number;
  /**申报级别**/
  level: number;
  /** 状态(1:已报名；2：已上传视频；3：已阅卷) */
  status?: number;
}

/** 活动表单类型 */
export interface ExamForm {
  /** 活动ID(新增不填) */
  id?: number;
  /** 活动名称 */
  name?: string;
  /** 考试级别 */
  level: number;
  /** 所属省市区信息 */
  province: string;
  city: string;
  district: string;
  country: string;
  contact_person: string;
  gender: number;
  id_card: string;
  id_type: number;
  img: string;
  nation: string;
  phone: string;
  level: number;
  /** 状态(1:启用；0：禁用) */
  status?: number;
}
